package middlewarre

import (
	"github.com/gin-gonic/gin"
	"gomicrodemo/common"
)

func AuthMiddleware() gin.HandlerFunc {

	return func(c *gin.Context) {
		//获取请求头里面的token
		tokenstr := c.GetHeader("Authorization")
		//判断该token是否存在
		if tokenstr == "" {
			c.JSON(401, gin.H{
				"data": "没有访问权限",
			})
			c.Abort()
			return
		}

		//token存在则校验
		token, claims, err := common.ParseToken(tokenstr)
		if err != nil || !token.Valid {
			//该token不正确
			c.JSON(401, gin.H{
				"data": "没有访问权限",
			})
			c.Abort()
			return
		} else {
			//将用户名设置到上下文中，然后放行
			username := claims.Username
			c.Set("username", username)
		}
	}
}
